/*
 * 文件名：StatusException.java
 * 版权：MoonBox 
 * 修改人：Peter
 * 修改时间：2018年10月10日
 * 修改内容：新增
 */
package com.renzhebiao.lkang.exception;

import com.renzhebiao.lkang.master.Status;

import lombok.Data;

/**
 * <p>
 * 
 * @author Peter
 * @since 1.0.0
 */
@Data
public abstract class StatusException extends RuntimeException {

    /**
     * 错误码
     */
    private Integer  code;

    /**
     * 错误描述参数
     */
    private String[] params;

    /**
     * 返回给客户端的错误买哦书，此错误描述优先，否则使用默认的描述
     */
    private String   desc;

    /**
     * 构造函数。
     * 
     * @param code 错误码
     */
    public StatusException(Integer code) {
        this.setCode(code);
    }

    /**
     * 构造函数。
     * 
     * @param desc 错误描述
     */
    public StatusException(String desc) {
        this.setDesc(desc);
    }

    /**
     * 构造函数。
     * 
     * @param code 错误码
     * @param desc 错误描述
     */
    public StatusException(Integer code, String desc) {
        this.setCode(code);
        this.setDesc(desc);
    }

    /**
     * 构造函数。
     * 
     * @param code 错误码
     * @param desc 错误描述
     */
    public StatusException(Integer code, String desc, String... params) {
        this.setCode(code);
        this.setDesc(desc);
        this.setParams(params);
    }

    /**
     * 构造函数。
     * 
     * @param code 错误码
     * @param desc 错误描述
     * @param params 错误描述参数
     */
    public StatusException(Status status) {
        this.setCode(status.getCode());
        this.setDesc(status.getDesc());
        this.setParams(status.getParams());
    }

    public StatusException setParams(String... params) {
        this.params = params;
        return this;
    }

}
